package org.example.gxpt.service;

import org.example.gxpt.common.result.PageResult;
import org.example.gxpt.common.result.Result;
import org.example.gxpt.pojo.dto.LoginDTO;
import org.example.gxpt.pojo.dto.SystemAdminDTO;
import org.example.gxpt.pojo.dto.SystemAdminPageQueryDTO;
import org.example.gxpt.pojo.dto.SystemAdminUpdateDTO;
import org.example.gxpt.pojo.entity.SystemAdmin;
import org.example.gxpt.pojo.vo.SystemAdminLoginVO;

import java.util.List;

public interface SystemAdminService {

    /**
     * 系统管理员注册
     * @param systemAdminDTO
     */
    void save(SystemAdminDTO systemAdminDTO);

    /**
     * 系统管理员登陆
     * @param loginDTO
     * @return
     */
    SystemAdminLoginVO login(LoginDTO loginDTO);


    /**
     * 系统管理员分页查询
     * @param systemAdminPageQueryDTO
     * @return
     */
    PageResult pageQuery(SystemAdminPageQueryDTO systemAdminPageQueryDTO);

    /**
     * 系统管理员登出
     * @return
     */
    Result logout();

    /**
     * 根据id更新系统管理员
     * @param systemAdminUpdateDTO
     */
    void updateById(SystemAdminUpdateDTO systemAdminUpdateDTO);

    /**
     * 根据上下文更新系统管理员数据
     * @param systemAdminUpdateDTO
     */
    void updateByContext(SystemAdminUpdateDTO systemAdminUpdateDTO);

    /**
     * 根据id更新系统管理员状态
     * @param id
     * @param status
     */
    void updateStatus(Long id, Integer status);

    /**
     * 根据id删除系统管理员
     * @param id
     */
    void deleteById(Long id);

    /**
     * 根据id查询系统管理员
     * @param id
     * @return
     */
    SystemAdmin getById(Long id);

    /**
     * 全部系统管理员数据
     * @return
     */
    List<SystemAdmin> listAll();
}
